package cn.edu.lcu.cs.javateaching.basic.array;

import java.util.Arrays;

/**
 * 利用数组，完成成绩统计演示，即统计各分数段的人数
 * 
 * @author Administrator
 *
 */
public class StasticScores {

	public static void main(String[] args) {
		int[] scores = { 20, 0, 100, 90, 99, 80, 60, 89, 98 };
		// 传递成绩数组，返回分级数组
		int[] grades = grade(scores);
		// 用传统的for循环遍历输出各等级的人数
		for (int i = 0; i < grades.length; i++) {
			System.out.println(grades[i]);
		}

		int[] grades2 = new int[5];
		// 用另外一个方法，传递成绩数组，及等级数组，等级数组在方法中被填充
		grade(scores, grades2);
		// 用Arrays工具类打印数组内容
		System.out.println(Arrays.toString(grades2));

	}

	/**
	 * <li>根据百分制成绩划分等级：优 良 中 及格 不及格</li>
	 * <li>暂时没有考虑成绩非法的情况，即输入的所有成绩都是0~100之间</li>
	 * 
	 * @param scores 成绩数组
	 * @return 各种等级人数组成的数组，等级高至低顺序
	 */
	public static int[] grade(int[] scores) {
		int[] grades = new int[5];
		for (int i = 0; i < scores.length; i++) {
			int score = scores[i];
			if (score >= 90) {
				grades[0]++;
			} else if (score >= 80) {
				grades[1]++;
			} else if (score >= 70) {
				grades[2]++;
			} else if (score >= 60) {
				grades[3]++;
			} else {
				grades[4]++;
			}
		}

		return grades;
	}

	/**
	 * <li>根据百分制成绩划分等级：优 良 中 及格 不及格</li>
	 * <li>暂时没有考虑成绩非法的情况，即输入的所有成绩都是0~100之间</li>
	 * <li>用Switch语句完成需求</li>
	 * 
	 * @param scores 成绩数组
	 * @param grades 成绩等级数组，用于存储结果
	 * @return 各种等级人数组成的数组，等级高至低顺序
	 */
	public static void grade(int[] scores, int[] grades) {
		// 用foreach语句完成循环
		for (int score : scores) {
			switch (score / 10) {
			case 10:
			case 9:
				grades[0]++;
				break;
			case 8:
				grades[1]++;
				break;
			case 7:
				grades[2]++;
				break;
			case 6:
				grades[3]++;
				break;
			default:
				grades[4]++;
				break;
			}
		}

	}

}
